/**
 * m_shader.h
 * 
 * 着色器类
*/

#ifndef __M_SHADER_H__
#define __M_SHADER_H__

typedef unsigned int shader_t;

class Shader
{
    //着色器编号
    shader_t ID;

    //读取着色器
    void readShaderFile(const char *vshader_path, const char *fshader_path);

    //编译着色器
    void compileShader(const char *vshader_code, const char *fshader_code);

public:
    //默认构造函数
    Shader() : ID(0) {}
    Shader(const char *vshader_path, const char *fshader_path);

    //使用默认构造函数时，采用此函数提供着色器文件。
    void setShader(const char *vshader_path, const char *fshader_path);

    //返回编号
    shader_t id() const;

    //使用着色器
    void use() const;

    //返回uniform变量的地址
    int uniform(const char *name) const;
};

#endif